home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-01.zip / 01 / Hity z okladki / OrgPlus 6 SBE / ORGPL.CAB / chartFunc.js < prev    next >
Text File  |  2006-09-20  |  14KB  |  565 lines

  1. /**********************************************************
  2. *                                                         *
  3. * (C) Copyright 2002 - 2004,  Human Concepts (tm)         *
  4. *                                                         *
  5. ***********************************************************
  6. * File name: chartFunc.js                                 *
  7. * Author: Andrey Ponomarev                                *
  8. **********************************************************/
  9.  
  10.   window.onresize = onChartPageResized
  11.   window.onscroll = onChartPageScrolled
  12.  
  13.   var strActiveBoxId = ""
  14.   var objBoxMouseOver
  15.   var timerId = -1
  16.   var nTimerCount = 0
  17.  
  18.   function onBoxMouseMove()
  19.   {
  20.     nTimerCount = 0   
  21.     var objGroup = GetGroupForObject(event.srcElement)
  22.     if ( typeof(objBoxMouseOver) == 'undefined' || 
  23.          objBoxMouseOver.id != objGroup.id ||
  24.          strActiveBoxId != objBoxMouseOver.id && timerId <= 0 )
  25.     {
  26.       objBoxMouseOver = objGroup
  27.  
  28.       if (timerId > 0)
  29.         window.clearInterval(timerId)
  30.  
  31.       timerId = window.setInterval("onTimerFunc()", 50) 
  32.     }
  33.   }
  34.  
  35.   function onBoxMouseOut()
  36.   {
  37.     if (timerId != -1)
  38.     {
  39.       var objGroup = GetGroupForObject(event.fromElement)
  40.       var objTo    = GetGroupForObject(event.toElement)
  41.       if ( typeof(objTo) == 'undefined' || objTo == null || objGroup != objTo)
  42.       {
  43.         window.clearInterval(timerId)
  44.         timerId = -1
  45.       }
  46.     }
  47.   }
  48.  
  49.   function onTimerFunc()
  50.   {
  51.     nTimerCount++
  52.     if (nTimerCount == 4)
  53.     {
  54.       window.clearInterval(timerId)
  55.       timerId = -1
  56.       onClickGroupObj(objBoxMouseOver)
  57.     }
  58.   }
  59.  
  60.   function onClickGroup()
  61.   {
  62.     onClickGroupObj(event.srcElement)
  63.   }
  64.  
  65.   function onClickGroupObj(obj)
  66.   {
  67.     if (typeof(obj) == "object")
  68.     {  
  69.       var objGroup = GetGroupForObject(obj)
  70.       onSelectChartBox(objGroup)      
  71.     }
  72.   }
  73.  
  74.   function GetGroupForObject(obj)
  75.   {
  76.     var objGroup = obj
  77.     if ( obj != null && typeof(obj) != 'undefined' )
  78.     {
  79.       if (objGroup.nodeName == "textbox")
  80.         objGroup = objGroup.parentElement
  81.  
  82.       if (objGroup.nodeName != "group")
  83.       {
  84.         var parent = objGroup.parentElement         
  85.         if(parent.nodeName == "A") //drill
  86.            return parent.parentElement
  87.         return parent
  88.       }
  89.     }
  90.     return objGroup
  91.   }
  92.  
  93.   function onClickPage()
  94.   {
  95.     clearBoxHighlighting()
  96.     strActiveBoxId = ""
  97.  
  98.     var obj = top.hcNavigate
  99.     if ( typeof( obj ) == "object" && typeof( obj.clearPage ) != "undefined" )
  100.       obj.clearPage()      
  101.   }
  102.  
  103.   function onMouseWheeling()
  104.   {
  105.     //mouse wheel works only for IE 6
  106.     var obj = top.hcToolbar
  107.     if( typeof(obj) == "object" && typeof( obj.onChartMouseWheeling ) != "undefined" )
  108.     {
  109.       obj.onChartMouseWheeling(event)      
  110.     }
  111.   }
  112.  
  113.   function onChartPageInit()      
  114.   {
  115.     if (getIEVersion() < 5.0)
  116.     {
  117.       document.body.innerText = "";
  118.       alert("You have an old version of Internet Explorer" +  //Loc
  119.         " - Update it please at least to Version 5.0.\nTo have a full functionality " +
  120.         "you should install Version 5.5, 6.0 or higher.");
  121.     }
  122.     else
  123.     {
  124.       var oGroup
  125.       var strHash = window.location.hash
  126.       if ( strHash != "" ) 
  127.       { 
  128.         var strId = strHash.substring( 1, strHash.length )
  129.         oGroup = getGroupBoxById(strId)
  130.       }
  131.       else
  132.       {
  133.         oGroup = findFirstGroupBox()
  134.       }
  135.  
  136.       if ( typeof(oGroup) == "object" && oGroup != null)
  137.       {
  138.         if ( typeof(top.hcNavigate) == "object" && typeof (top.hcNavigate.fillPage) != "undefined" )
  139.         {
  140.           top.hcNavigate.fillPage(oGroup)
  141.         }
  142.         
  143.         clearBoxHighlighting()
  144.         strActiveBoxId = oGroup.id
  145.     
  146.         if ( strHash != "" ) 
  147.         {
  148.           highlightSelectedBox()
  149.           navigateDeffered()
  150.         }
  151.       }
  152.       else
  153.       {
  154.         strActiveBoxId = ""
  155.       }
  156.  
  157.       initOverviewWindow()
  158.       updateOverviewWindow()
  159.  
  160.       var obj = top.hcToolbar
  161.       if( typeof(obj) == "object" && typeof( obj.setZoom ) != "undefined" )
  162.       {
  163.         obj.ZoomToFitInit()
  164.       }
  165.     }
  166.   }
  167.  
  168.   function  onChartPageScrolled()
  169.   {
  170.     updateOverviewWindow()
  171.   }
  172.   
  173.   function getProfilesObj()
  174.   {
  175.     return top.hcPersons.document.all["ProfileInfo"];
  176.   }    
  177.  
  178.   function updateOverviewWindow()
  179.   {
  180.     var obj = top.hcToolbar
  181.     if( typeof(obj) == "object" && typeof( obj.updateOverviewWindow ) != "undefined" )
  182.     {
  183.       obj.updateOverviewWindow()
  184.     }
  185.   }
  186.   
  187.   function initOverviewWindow()
  188.   {
  189.     var obj = top.hcToolbar
  190.     if( typeof(obj) == "object" && typeof( obj.initOverviewWindow ) != "undefined" )
  191.     {
  192.       obj.initOverviewWindow()
  193.     }
  194.   }
  195.  
  196.   function findFirstGroupBox()
  197.   {
  198.     var oGroup
  199.     var groupObjs = document.getElementsByTagName("group")
  200.     if (groupObjs.length > 0)
  201.     {
  202.       oGroup = groupObjs(1)
  203.     }
  204.     return oGroup
  205.   }
  206.  
  207.   function onSelectChartBox(groupObj)
  208.   {
  209.     clearBoxHighlighting()
  210.     strActiveBoxId = groupObj.id
  211.     highlightSelectedBox()
  212.  
  213.     var obj = top.hcNavigate
  214.     if( typeof( groupObj ) == "object" )
  215.     {
  216.       if ( typeof( obj ) == "object" && typeof( obj.fillPage ) != "undefined" )
  217.       {
  218.         obj.fillPage(groupObj)      
  219.       }
  220.     }
  221.   }
  222.  
  223.   function getGroupBoxById(strId)
  224.   {
  225.     var obj
  226.     if ( strId != "" )
  227.     {
  228.       var groupObjs = document.getElementsByTagName("group")
  229.       for (i = 0; i < groupObjs.length; i++)
  230.       {
  231.         if (groupObjs(i).id == strId)
  232.         {
  233.           return groupObjs(i)
  234.         }
  235.       }
  236.     }
  237.     return obj
  238.   }
  239.  
  240.   function navigateBox(strId)
  241.   {
  242.     var obj = getGroupBoxById(strId)
  243.     if (typeof(obj) == "object")
  244.     {
  245.       onSelectChartBox(obj)
  246.     }      
  247.   }
  248.   
  249.   var timerNavigateId = -1
  250.   function navigateDeffered()
  251.   {        
  252.     if(timerNavigateId == -1)
  253.     {
  254.       timerNavigateId = window.setInterval("onTimerNavigateFunc()", 150)     
  255.     }
  256.   }
  257.  
  258.   function onTimerNavigateFunc()
  259.   {
  260.     window.clearInterval(timerNavigateId)
  261.     timerNavigateId = -1 
  262.     navigateBox(strActiveBoxId)     
  263.   }    
  264.   
  265.   function onNavigatePageInit()
  266.   {
  267.     var obj = getGroupBoxById(strActiveBoxId)
  268.     if (typeof(obj) == "object")
  269.     {      
  270.       onSelectChartBox(obj)
  271.     }
  272.   }
  273.  
  274.   function highlightSelectedBox()
  275.   {
  276.     var obj = getGroupBoxById(strActiveBoxId)
  277.     setOpacityForGroupBox(obj, 0.4)
  278.   }
  279.  
  280.   function clearBoxHighlighting()
  281.   {
  282.     if (strActiveBoxId != "")
  283.     {
  284.       var obj = getGroupBoxById(strActiveBoxId)
  285.       setOpacityForGroupBox(obj, 1.0)
  286.     }
  287.   }
  288.  
  289.   function setOpacityForGroupBox(obj, val)
  290.   {  
  291.     if (typeof(obj) == "object")
  292.     {
  293.      setOpacityForObjecs(obj, "rect", val)
  294.      setOpacityForObjecs(obj, "roundrect", val)
  295.      setOpacityForObjecs(obj, "shape", val)
  296.      setOpacityForObjecs(obj, "oval", val)
  297.     }
  298.   }
  299.  
  300.   function setOpacityForObjecs(obj, name, val)
  301.   {
  302.     var rectObjs = obj.getElementsByTagName(name)
  303.     var fillObjs
  304.     var objFill
  305.     var strName
  306.  
  307.    
  308.     for (i = 0; i < rectObjs.length; i++)
  309.     {
  310.       fillObjs = rectObjs(i).getElementsByTagName("fill")
  311.       if (fillObjs.length > 0)
  312.       {
  313.         objFill = fillObjs(0)
  314.         strName = rectObjs(i).getAttribute("name")
  315.         
  316.         if ( strName == "SelectTranspRect" || 
  317.              strName == "SelectRect" && getIEVersion() < 6.0 )
  318.           objFill.setAttribute("on", val != 1.0)
  319.  
  320.         var objId = rectObjs(i).id
  321.         var bFound = false
  322.         if (objId != null)
  323.         {
  324.           var nLen = objId.length
  325.           var strToSearch = "_HitTestRect"
  326.           if (nLen > strToSearch.length )
  327.           {
  328.             var s = objId.substr(nLen - strToSearch.length, nLen - 1);
  329.             if (s == strToSearch)
  330.               bFound = true
  331.           }
  332.         }
  333.         if (!bFound)
  334.           objFill.setAttribute("opacity", val)
  335.       }
  336.     }
  337.   }
  338.  
  339.   function onChartPageResized()
  340.   {
  341.     updateOverviewWindow()
  342.   }
  343.  
  344.   function onWndResized()
  345.   {
  346.     var toolBar = top.hcToolbar
  347.     
  348.     if (toolBar.bFitToWindow)
  349.         top.hcMain.scrolling='no';
  350.     
  351.     if( typeof(toolBar) == "object" && typeof( toolBar.tryCenterPage ) != "undefined" && 
  352.         typeof( toolBar.ZoomToFit ) != "undefined" )
  353.     {
  354.       if (top.bAutoFitToWindow)
  355.         toolBar.ZoomToFit()
  356.       else
  357.         toolBar.tryCenterPage()      
  358.     }
  359.  
  360.     updateOverviewWindow()    
  361.   }
  362.   
  363.   function onPageInit()        //SPb AGal 15.10.2004
  364.   { 
  365.     var toolBar = top.hcToolbar
  366.  
  367.     if (toolBar.visibility == "hidden")
  368.     {
  369.       toolBar.bFitToWindow = true;
  370.       toolBar.SetAutoFitFlag();
  371.     }
  372.  
  373.     toolBar.bZoomInitReady = toolBar.bFitToWindow ? false : true;
  374.  
  375.     onChartPageInit();
  376.   }             
  377.   
  378.   function getPersonsObj()
  379.   {
  380.     var spanObjs = top.hcPersons.document.body.children.tags("span")
  381.     if(spanObjs.length == 0)
  382.       return null
  383.     var idxObj = null
  384.     for(var j = 0; j < spanObjs.length; ++j)
  385.     {
  386.       if(spanObjs(j).id == "Index")
  387.       {
  388.         idxObj = spanObjs(j)
  389.         break
  390.       }            
  391.     }
  392.     spanObjs = idxObj.children.tags("span")
  393.     if(spanObjs.length == 0)
  394.       return          
  395.     var personsObj = null
  396.     for(var j = 0; j < spanObjs.length; ++j)
  397.     {
  398.       if(spanObjs(j).id == "Persons")
  399.       {
  400.         personsObj = spanObjs(j) 
  401.         break
  402.       }            
  403.     }        
  404.     return personsObj
  405.   }    
  406.   
  407.   function getFieldsObj()
  408.   {
  409.     var spanObjs = top.hcPersons.document.body.children.tags("span")
  410.     if(spanObjs.length == 0)
  411.       return null
  412.     var idxObj = null
  413.     for(var j = 0; j < spanObjs.length; ++j)
  414.     {
  415.       if(spanObjs(j).id == "Index")
  416.       {
  417.         idxObj = spanObjs(j)
  418.         break
  419.       }            
  420.     }
  421.     if(idxObj == null) return null
  422.     spanObjs = idxObj.children.tags("span")
  423.     if(spanObjs.length == 0)
  424.       return;          
  425.     var fieldsObj = null
  426.     for(var j = 0; j < spanObjs.length; ++j)
  427.     {
  428.       if(spanObjs(j).id == "Fields")
  429.       {
  430.         fieldsObj = spanObjs(j)
  431.         break
  432.       }            
  433.     }        
  434.     return fieldsObj
  435.   }    
  436.  
  437.   
  438.   function findPersonNode(id, parent)
  439.   {
  440.     if(parent == null)
  441.     {
  442.       parent = getPersonsObj()
  443.       if(parent == null) return null
  444.     }
  445.     var spanObjs = parent.children.tags("span")
  446.     if(spanObjs.length == 0)
  447.       return null
  448.  
  449.     for(var j = 0; j < spanObjs.length; ++j)
  450.     {
  451.       if(spanObjs(j).id == id)
  452.       return spanObjs(j)
  453.     }    
  454.  
  455.     for(var j = 0; j < spanObjs.length; ++j)
  456.     {
  457.       var spanObj = findPersonNode(id,spanObjs(j))
  458.       if(spanObj != null) return spanObj
  459.     }    
  460.     return null
  461.   }
  462.  
  463.  
  464.   var cellArray = null
  465.   function ShowHSProfile(profileId, bShow)
  466.   {
  467.     var strId = "prof"+profileId;
  468.     var objProf = document.all(strId)
  469.     if (objProf == null) 
  470.       return;
  471.       
  472.     var objGroup = GetGroupForObject(event.srcElement)
  473.     var objPerson = findPersonNode(objGroup.id, null)
  474.     if (objPerson == null)
  475.       return;
  476.        
  477.     if (bShow)
  478.     {
  479.       var imgs = new Array()
  480.       var imgSrcs  = new Array()
  481.                   
  482.       cellArray = new Array()
  483.       var paramObjs = objPerson.getElementsByTagName("param")
  484.       var rows =  objProf.children[0].rows;
  485.       var k = 0, n = 0;
  486.       
  487.       var cellright = null 
  488.       
  489.       for (i = 0; i < rows.length; ++i)
  490.       {
  491.         var cells = rows[i].cells;
  492.         var cell = cells[1];
  493.         var merged = false;
  494.         if (cell == null)
  495.         {
  496.           merged = true;
  497.           cell = cells[0];
  498.         }
  499.         else  if (cellright == null) 
  500.           cellright = cell
  501.         for (j = 0; j < paramObjs.length; ++j)
  502.         {      
  503.           var p = paramObjs(j)
  504.           if (cell.id != null &&  cell.id == p.id)
  505.           {
  506.             if (p.img != null)
  507.             {
  508.               var img = cell.getElementsByTagName("img")[0]
  509.               if (img != null)
  510.               {
  511.                 imgs[n] = img
  512.                 if (merged)
  513.                   img.merged = true
  514.                 imgSrcs[n++] = p.name
  515.               }
  516.             }
  517.             else
  518.             {
  519.               if (p.name == "")
  520.               {
  521.                 cell.innerHTML = " "
  522.                 if (cell.style.textDecoration != "none")              
  523.                 {
  524.                   cellArray[k++] = cell;
  525.                   cellArray[k++] = cell.style.textDecoration;
  526.                   cell.style.textDecoration = "none"
  527.                 }
  528.               }
  529.               else
  530.                 cell.innerText = p.name
  531.             }
  532.             break;
  533.           }
  534.         }
  535.       }                 
  536.       
  537.       var w1 = objProf.children[0].clientWidth
  538.       var w2 = cellright != null ? cellright.clientWidth : null
  539.       
  540.       for (i = 0; i < imgs.length; ++i)
  541.       {
  542.         var img = imgs[i]
  543.         img.src = imgSrcs[i]
  544.         if (img.merged != null)
  545.           img.width = w1 - 2;
  546.         else if (w2 != null)
  547.           img.width = w2 - 2;
  548.       }
  549.     }
  550.     var x = window.event.clientX + document.body.scrollLeft 
  551.     var y = window.event.clientY + document.body.scrollTop
  552.     objProf.style.left = x
  553.     objProf.style.top = y    
  554.     var strShowCmd = bShow ? "visible" : "hidden"
  555.     objProf.style.visibility = strShowCmd;    
  556.     
  557.     if (!bShow)
  558.     {
  559.       for (i = 0; i < cellArray.length; i +=2)
  560.       {
  561.         cellArray[i].style.textDecoration = cellArray[i+1]
  562.       }
  563.     }
  564.   }
  565.